//
// Created by Administrator on 2025/4/13.
//

#ifndef STATEMACHINE_STATEMANAGER_H
#define STATEMACHINE_STATEMANAGER_H

/*
 * 前一个类说了，它只是一个受你把控的机器
 * 现在来行驶你作为一个"管理者所拥有的特权！"
 * */
#include <iostream>
#include <vector>
#include "BaseState.h"
#include "NorthMode.h"
#include "EastMode.h"
#include "SouthMode.h"
#include "WestMode.h"
#include "ErrorMode.h"

#define STATE_SIZE 5 //定义状态数量

class StateManager {
public:
    //单例模式
    static StateManager* getInstance();
    ~StateManager();
    //注册状态
    bool registState(BaseState* state);
    //获取状态
    BaseState* getState(int stateIndex) const;
    //获取状态数量
    int getStateCount() const;
private:
    //构造私有，为了实现单例模式。可以理解为管理者只能有一个！
    StateManager();
private:
    //使用vector容器存储状态指针
    std::vector<BaseState*> _stateVec;
    //嵌入式不支持容器则使用数组
//    BaseState* _stateArr[STATE_SIZE];
};


#endif //STATEMACHINE_STATEMANAGER_H
